home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / nyan_e2 / nyane2_v.ext < prev    next >
Text File  |  1993-11-30  |  25KB  |  1,075 lines

  1. /**********  受信ログを閲覧する  ~外部コマンド使用版~  v1.04a用  **********/
  2. %ok{[MES]
  3.     select({ }|MES,5,,{ OK?})
  4. };
  5. %note{[MES]
  6.     footnote({ 処理する}|MES|{のログファイルを選んでください});
  7. };
  8. %DeleteMemo{
  9.     loop({
  10.         case(@mlast>4,
  11.         {Yes},{    case(@mcheck,0,{mopen(@mlast,0,21,80,62)});
  12.             mclose(3);
  13.             im({Yes});
  14.         },{No},{im({No});
  15.         });
  16.     });
  17.     mclear(2); mclear(3); mclear(4);
  18. };
  19.  
  20. %mcopy{[ORI,NEW]
  21.     var now[5];
  22.     now:=0;
  23.     %max    @nolmemo(ORI);
  24.     loop({
  25.         madd(NEW,@memo(ORI,now+1,memomax));
  26.         case(now+memomax<max,
  27.         {Yes},{    now:=now+memomax;
  28.             im({Yes});
  29.         },{No},{im({No});
  30.         });
  31.     });
  32. };
  33.  
  34. %mmove{[ORI,First,End,NEW]
  35.     var now[5];
  36.     now:=First-1;
  37.     loop({
  38.         case(now+memomax<End,
  39.         {Yes},{    madd(NEW,@memo(ORI,now+1,memomax));
  40.             now:=now+memomax;
  41.             im({Yes});
  42.         },{No},{madd(NEW,@memo(ORI,now+1,End-now));
  43.             im({No});
  44.         });
  45.     });
  46. };
  47.  
  48. %boadmenu{[fname,type,ForumN,First,Count]
  49.     var linenum[8];
  50.     var memnum[6];
  51.     var TREE[4];
  52.     %resTitle{[title]
  53.         var org[80];
  54.         var num[3];
  55.         org:=title;
  56.         num:=0;
  57.         loop({
  58.         %after    @getchar(org,4,80);
  59.         case(@getchar(org,1,3),
  60.         {Re:},  { num:=num+1; org:=after;    im({Yes});
  61.         },{re:},{ num:=num+1; org:=after;    im({Yes});
  62.         },{RE:},{ num:=num+1; org:=after;    im({Yes});
  63.         },{Re*},{ num:=num+@head(after,{:});
  64.               org:=@body(after,{:});    im({Yes});
  65.         },     ,{
  66.             case(num==0,
  67.             {Yes},{ org:={Re:}|org;
  68.             },   ,{ org:={Re*}|(num+1)|{:}|org;
  69.             });
  70.             im({No});
  71.         });
  72.         });
  73.         im(org);
  74.     };
  75.  
  76.     %SetTitle{
  77.         var idp[2];
  78.         var tip[2];
  79.         %Line @memo(2,linenum,1);
  80.         %HeadLine{[ATTR]
  81.             var st[2];
  82.             var en[2];
  83.             case(ATTR,
  84.             {NUM},{
  85.             st:=1;
  86.             case(type,
  87.             {Forum},{case(MesType,{OLD},{en:=3},{NEW},{en:=5});
  88.             },{Patio},{en:={5};
  89.             });
  90.             },{TITLE},{
  91.             en:=80;
  92.             case(type,
  93.             {Forum},{case(MesType,{OLD},{st:=39},{NEW},{st:=40});
  94.             },{Patio},{st:=40;
  95.             });
  96.             });
  97.             im(@getchar(@memo(4,1,1),st,en));
  98.         };
  99.         case(type,{Forum},{
  100.             case(@getchar(@memo(4,1,1),4,1)={/},
  101.             {Yes},{    MesType:={OLD};
  102.             },{No},{MesType:={NEW};
  103.             });
  104.         });
  105.         case(type,
  106.         {Forum},{
  107.             IndexLine:={Forum:}
  108.                 |@getchar(ForumN|{       },1,8)|{/}|num|{/};
  109.             case(MesType,{OLD},{IndexLine:=IndexLine|{00}});
  110.             IndexLine:=IndexLine|@HeadLine({NUM});
  111.             Wtitle:=@HeadLine({TITLE})
  112.         },{BUL},{
  113.             IndexLine:={Forum:}|@getchar(ForumN|{       },1,8)
  114.                     |{/  /BUL  };
  115.             Wtitle:=@getchar(Line,34,80);
  116.         },{HP},{
  117.             IndexLine:={HP   :}|@getchar(ForumN|{       },1,8)
  118.                     |{         };
  119.             Wtitle:=@getchar(Line,39,80);
  120.             %WTITLE    @getchar(@body(Wtitle,{:}),1,2);
  121.             case(WTITLE={Re} || WTITLE={re} || WTITLE={RE},{Yes},{
  122.                 Wtitle:=@body(Wtitle,{:});
  123.             });
  124.         },{Patio},{
  125.             IndexLine:={Patio:}|@getchar(ForumN|{       },1,8)|
  126.                     {/  /}|@HeadLine({NUM});
  127.             Wtitle:=@HeadLine({TITLE});
  128.         },{Mail},{
  129.             case(@getchar(Line,24,4)<>{ PC>},
  130.             {Yes},{    IndexLine:={Mail :}|@getchar(Line,27,8)
  131.                     |{         };
  132.             },{No},{IndexLine:={PCVAN:}|@getchar(@memo(4,1,1),24,8)
  133.                     |{         };
  134.             });
  135.             Wtitle:=@getchar(Line,42,80);
  136.         });
  137.         case(kind,{Yes},{
  138.             %TL    @memo(4,1,1);
  139.             case(type,
  140.             {Forum},{case(MesType,{OLD},{idp:={11}; tip:={39}},
  141.                           {NEW},{idp:={13}; tip:={40}})
  142.             },{BUL},{idp:={7}; tip:={31};
  143.             },{HP},{idp:={24}; tip:={38};
  144.             },{Patio},{idp:={13}; tip:={40};
  145.             },{Prof},{idp:={24}; tip:={24};
  146.             });
  147.             IndexLine:={Mail :}|@getchar(TL,idp,8)|{         };
  148.             Wtitle:=@getchar(TL,tip,80);
  149.         });
  150.         Wtitle:=@resTitle(Wtitle);
  151.         case(type={HP},{Yes},{
  152.             %tardata  @head(ForumN,{ });
  153.             case(@SelHandle<>{},{Yes},{
  154.                 Wtitle:=@head(Wtitle,{\n});
  155.                 case( InsHan,
  156.                 {HEAD},{Wtitle:=@SelHandle|{:}|Wtitle},
  157.                 {TAIL},{Wtitle:=Wtitle|{<}|@SelHandle}
  158.                 );
  159.             });
  160.         });
  161.         Wtitle:=@head(Wtitle,{\n});
  162.         Wtitle2:=Wtitle;
  163.         loop({
  164.             Wtitle2:=@input({ 題名を入れてください},,Wtitle2);
  165.             case(@nochar(Wtitle2)>40,{Yes},{
  166.                 footnote({題名は, 全角20文字までです});
  167.                 im({Yes})
  168.             },,{im({No})
  169.             });
  170.         });
  171.         footnote({});
  172.         case(Wtitle2<>{},{Yes},{Wtitle:=Wtitle2});
  173.         case(@getchar(Wtitle,@nochar(Wtitle)-1,2),
  174.             {能},{    Wtitle:=Wtitle|{ }
  175.         });
  176.         Wtitle:=Wtitle|{\n};
  177.         im(Wtitle);
  178.     };
  179.  
  180.     %responce{[action]
  181.         var IndexLine[82];
  182.         var Wtitle[82];
  183.         var Wtitle2[82];
  184.         var Edit[3];
  185.         case(type<>{Prof},{Yes},{
  186.         SetTitle;
  187.         OutAllMemo;
  188.         case( (type={Forum} || type={Patio}) && action={SAY},{Yes},{
  189.             IndexLine:=@getchar(IndexLine,1,18)|{     };
  190.         });
  191.         madd(5,{});
  192.         case(type={Mail},{Yes},{
  193.             %tardata    @head(@getchar(IndexLine,7,8),{ });
  194.             case(@SelHandle<>{} && @body(Handle,,{/})<>{},{Yes},{
  195.                 madd(5,{FROM:}|@SelHandle|{\n})});
  196.         });
  197.         RESPONCE;
  198.         });
  199.     };
  200.  
  201.     %resp2{
  202.         var IndexLine[82];
  203.         var Wtitle[82];
  204.         var Wtitle2[82];
  205.         var Edit[3];
  206.         case(type<>{Mail},
  207.         {Yes},{    kind:={Yes};
  208.             SetTitle;
  209.             OutAllMemo;
  210.             madd(5,{});
  211.             %tardata    @head(@getchar(IndexLine,7,8),{ });
  212.             case(@SelHandle<>{} && @body(Handle,,{/})<>{},{Yes},{
  213.                 madd(5,{FROM:}|@SelHandle|{\n})});
  214.             RESPONCE;
  215.         },{No},{responce({SAY});
  216.         });
  217.     };
  218.  
  219.     %delmsg{[MARK]
  220.         %DELMSG{
  221.             OutAllMemo;
  222.             mclear(wm);
  223.             mmove(2,1,linenum-1,wm);
  224.             madd(wm,@getchar(Line,1,8));
  225.             case(MARK,
  226.             {D},{    case(@post(linenum),
  227.                 {保},{    madd(wm,{ });
  228.                 },{削},{madd(wm,MARK);
  229.                 });
  230.             },{C},{    case(@post2(linenum),
  231.                 {保},{    madd(wm,{ });
  232.                 },{切},{madd(wm,MARK);
  233.                 });
  234.             });
  235.             madd(wm,@getchar(Line,10,80));
  236.             mmove(2,linenum+1,maxline+1,wm);
  237.             mclear(2);
  238.             mcopy(wm,2);
  239.             mclear(wm);
  240.         };
  241.         %maxline @nolmemo(2)-1;
  242.         %Line @memo(2,linenum,1);
  243.         case(linenum>1 && linenum<maxline,{Yes},{DELMSG});
  244.         OutAllMemo;
  245.     };
  246.  
  247.     %copymsg{
  248.         OutAllMemo;
  249.         mclear(wm);
  250.         case(linenum!=1,{Yes},{
  251.             mmove(2,1,linenum-1,wm);
  252.         });
  253.         case(@copyset(linenum),
  254.           {保},{madd(wm,{ });
  255.         },    ,{madd(wm,{C});
  256.         });
  257.         madd(wm,@getchar(@memo(2,linenum,1),2,80));
  258.         mmove(2,linenum+1,@nolmemo(2),wm);
  259.         mclear(2);
  260.         mcopy(wm,2);
  261.         mclear(wm);
  262.         OutAllMemo;
  263.     };
  264.  
  265.     %TrueHandle{
  266.         loop({
  267.             case(@getchar(Handle,@nochar(Handle),1)={ },
  268.             {Yes},{    Handle:=@body(Handle,,{ }); im({Yes});
  269.             },{No},{
  270.                 case(@getchar(Handle,@nochar(Handle)-1,2)={ },
  271.                 {Yes},{    Handle:=@body(Handle,,{ }); im({Yes});
  272.                 },{No},{im({No});
  273.                 });
  274.             });
  275.         });
  276.     };
  277.  
  278.     %SetProf{
  279.         var IndexLine[82];
  280.         var ID[8];
  281.         var Handle[30];
  282.         var idp[2];
  283.         var tip[2];
  284.         %TL    @memo(4,1,1);
  285.         case(type,
  286.         {Forum},{case(MesType,{OLD},{idp:={11}; tip:={21}},
  287.                       {NEW},{idp:={13}; tip:={23}})
  288.         },{BUL},{idp:={7}; tip:={};
  289.         },{HP},{idp:={24}; tip:={};
  290.         },{Patio},{idp:={13}; tip:={23};
  291.         },{Mail},{idp:={23}; tip:={5};
  292.         },{Prof},{idp:={24}; tip:={1};
  293.         });
  294.         ID:=@getchar(TL,idp,8);
  295.         case(tip<>{},
  296.         {Yes},{    Handle:=@getchar(TL,tip,16);
  297.         },{No},{Handle:=ID;
  298.         });
  299.         TrueHandle;
  300.         OutAllMemo;
  301.         case(Handle=ID,{Yes},{
  302.             Handle:=@input({ ハンドル名を入力してください},,ID);
  303.         });
  304.         case(Handle={},{Yes},{Handle:=ID});
  305.         case(@YesNo({ 「}|Handle|{」 氏のプロフィールを}|
  306.             {受信予約しますか?}),{Yes},{
  307.             IndexLine:={予     Prof :}|ID|{         :}|Handle|{\n};
  308.             write(logd|{\UP\INDEX.TXT},IndexLine);
  309.         });
  310.     };
  311.  
  312.     %PlusHandle{
  313.         OutAllMemo;
  314.         mset(4,{n});
  315.         case(len>0,
  316.         {Yes},{
  317.             case(@mcheck!=0,{Yes},{ mclose(2) });
  318.             mclear(4);
  319.             mread(fname,4,st,len);
  320.             %line    @memo(4,1,1);
  321.             case(type,
  322.             {Forum},{case(MesType,
  323.                  {OLD},{pick:=@getchar(line,11,8);
  324.                     flag:={FO}
  325.                  },{NEW},{pick:=@getchar(line,13,8);
  326.                     flag:={FN}
  327.                 });
  328.             },{Mail},{case(@getchar(line,20,4)<>{PCV>},
  329.                   {Yes},{pick:=@getchar(line,23,8); flag:={MA}
  330.                   },{No},{pick:=@getchar(line,24,8); flag:={PC}
  331.                   });
  332.             });
  333.             case(@body(@memo(3),pick)={},{Yes},{
  334.                 case(flag,
  335.                 {FO},{madd(3,@getchar(line,11,28)|{\n});
  336.                 },{FN},{madd(3,@getchar(line,13,26)|{  \n});
  337.                 },{MA},{madd(3,pick|{  }|
  338.                         @getchar(line,5,16)|{  \n});
  339.                 },{PC},{madd(3,pick|{  (VAN)\n});
  340.                 });
  341.             });
  342.         });
  343.         linenum:=lno;
  344.         im(len<=0 && EOFproc<>{NEXT});
  345.     };
  346.  
  347.     %refer{
  348.         var lno[4];
  349.         %work    @mlast+1;
  350.         CloseAllMemo;
  351.         loop({
  352.             mopen(2,0,21,639,459,{w});
  353.             footnote({終了表示},{b});
  354.             loop({
  355.                 waitx(1000);
  356.                 im(@xtype!=2 && @xtype<100 || @xlinenum<0)
  357.             });
  358.             case(@PFK(@xtype)=2 || @PFK(@xtype)=102,
  359.             {Yes},{
  360.                 footnote({終了},{b});
  361.                 lno:=@xlinenum;
  362.                 case(@mcheck,2,{mclose(2)});
  363.                 case(TREE,
  364.                 {Yes},{
  365.                     %max @nolmemo(2)-1;
  366.                     case(lno,1,{lno:=2});
  367.                     %LineData    @read(DataDat,lno,1);
  368.                     %st  @getchar(LineData,1,8);
  369.                     %len @getchar(LineData,10,8)-st;
  370.                     mread(fname,work,st,len);
  371.                 },{No},{
  372.                     %max @nolmemo(2)-1;
  373.                     case(lno,1,{lno:=2},max,{lno:=max-1});
  374.                     %st  @getchar(@memo(2,lno,1),1,8);
  375.                     %len @getchar(@memo(2,lno+1,1),1,8)-st;
  376.                     mread(fname,work,st,len);
  377.                 });
  378.                 mopen(work,0,21,639,459,{r});
  379.                 loop({waitx(9999); im(@PFK(@xtype)!=101)});
  380.                 check(work);
  381.                 mclose(3);
  382.                 im({Yes});
  383.             },{No},{im({No});
  384.             });
  385.         });
  386.         check(2);
  387.         mclose(2);
  388.     };
  389.  
  390.     %loadmsg{[sign]
  391.         var lno[4];
  392.         var pick[10];
  393.         var adddata[30];
  394.         var flag[3];
  395.         %max @nolmemo(2)-1;
  396.         case(sign,
  397.         {+},{lno:=linenum+1},
  398.         {-},{lno:=linenum-1},
  399.         {=},{lno:=linenum});
  400.         case(linenum=1,{Yes},{lno:=2});
  401.         case(lno<=1,
  402.         {Yes},{    lno:=linenum;
  403.             Bell;
  404.             select({これ以前の発言はありません},1);
  405.         });
  406.         case(lno>=max,
  407.         {Yes},{    lno:=max-1;
  408.             Bell;
  409.             select({これ以降の発言はありません},1);
  410.         });
  411.         %st  @getchar(@memo(2,lno,1),1,8);
  412.         %len @getchar(@memo(2,lno+1,1),1,8)-st;
  413.         PlusHandle;
  414.     };
  415.  
  416.     %loadmsg2{[sign]
  417.         var lno[4];
  418.         var pick[10];
  419.         var adddata[30];
  420.         var flag[3];
  421.         %max @nolmemo(2)-1;
  422.         case(sign,
  423.         {+},{lno:=linenum+1},
  424.         {-},{lno:=linenum-1},
  425.         {=},{lno:=linenum});
  426.         case(linenum=1,{Yes},{lno:=2});
  427.         case(lno<=1,{Yes},{
  428.             lno:=linenum;
  429.             Bell;
  430.             select({これ以前の発言はありません},1);
  431.         });
  432.         case(lno>max,{Yes},{
  433.             lno:=max;
  434.             Bell;
  435.             select({これ以降の発言はありません},1);
  436.         });
  437.         %LineData    @read(DataDat,lno,1);
  438.         %st  @getchar(LineData,1,8);
  439.         %len @getchar(LineData,10,8)-st;
  440.         PlusHandle;
  441.     };
  442.  
  443.     %dispone{
  444.         var cont[4];
  445.         var kind[4];
  446.         cont:={Yes};
  447.         madd(4,{});
  448.         case(@loadmsg({=}),{Yes},{
  449.             loop({loadmsg({+})});
  450.         });
  451.         loop({
  452.             kind:={};
  453.             %wm    {5};
  454.             mclear(5);
  455.             mopen(4,0,21,639,459,{r});
  456.             footnote({終了 前  次 }|@post(linenum)|{次}
  457.             |@post2(linenum)|{次応答発言        参照MAILPROF},{b});
  458.             loop({    waitx(1000);
  459.                 case(@mcheck<>4,{Yes},{mopen(4)});
  460.                 im(@xtype<100);
  461.             });
  462.             case(@PFK(@xtype),
  463.             101,{EOFproc:={SEL}; cont:={No}},
  464.             102,{loop({loadmsg({-})})},
  465.             103,{loop({loadmsg({+})})},
  466.             104,{delmsg({D}); loadmsg({+})},
  467.             105,{delmsg({C}); loadmsg({+})},
  468.             106,{responce({RES})},
  469.             107,{responce({SAY})},
  470.             110,{refer},
  471.             111,{resp2},
  472.             112,{SetProf},
  473.                ,OutAllMemo);
  474.             case(@mcheck!=0 && @mlast>4,{Yes},{mclose(3)});
  475.             CloseAllMemo;
  476.             im(cont)
  477.         });
  478.         mset(4,{n});
  479.     };
  480.  
  481.     %dispone2{
  482.         %copyset2{[ptr]
  483.             case(@getchar(@memo(2,ptr,1),1,1),
  484.             {C},{im({保});
  485.             },,{ im({切});
  486.             });
  487.         };
  488.         var cont[4];
  489.         var kind[4];
  490.         cont:={Yes};
  491.         madd(4,{});
  492.         case(@loadmsg2({=}),{Yes},{
  493.             loop({loadmsg2({+})});
  494.         });
  495.         loop({
  496.             kind:={};
  497.             %wm    {5};
  498.             mclear(5);
  499.             mopen(4,0,21,639,459,{r});
  500.             footnote({終了 前  次     }|@copyset2(linenum)|{次}
  501.             |{応答発言        参照MAILPROF},{b});
  502.             loop({    waitx(1000);
  503.                 case(@mcheck<>4,{Yes},{mopen(4)});
  504.                 im(@xtype<100);
  505.             });
  506.             case(@PFK(@xtype),
  507.             101,{EOFproc:={SEL}; cont:={No}},
  508.             102,{loop({loadmsg2({-})})},
  509.             103,{loop({loadmsg2({+})})},
  510.             105,{copymsg; loadmsg2({+})},
  511.             106,{responce({RES})},
  512.             107,{responce({SAY})},
  513.             110,{refer},
  514.             111,{resp2},
  515.             112,{SetProf},
  516.                ,OutAllMemo);
  517.             case(@mcheck!=0 && @mlast>4,{Yes},{mclose(3)});
  518.             CloseAllMemo;
  519.             im(cont)
  520.         });
  521.         mset(4,{n});
  522.     };
  523.  
  524.     %SetTree{
  525.         mclear(2);
  526.         case(TREE,
  527.         {Yes},{
  528.             mread(MesDat,2);
  529.             TREE:={No};
  530.         },{No},{
  531.             dispoff({Yes});
  532.             case(@filechk(TreeDat),{No},{
  533.                 %nowdir    @getcdir2;
  534.                 setcdir2(current);
  535.                 command({MESTREE }|MesDat|{ }|TreeDat|{ }|DataDat
  536.                     |{ }|tmpdir|{\});
  537.                 setcdir2(nowdir);
  538.             });
  539.             mread(TreeDat,2);
  540.             TREE:={Yes};
  541.             dispoff({No});
  542.         });
  543.     };
  544.  
  545.     %copyset{[ptr]
  546.         case(@getchar(@memo(2,ptr,1),1,1),
  547.         {C},{ im({保});
  548.         }, ,{     case(@getchar(@memo(2,ptr,1),2,2),
  549.             {│},{    im({子});
  550.             },{ },{im({子});
  551.             },,{    im({切});
  552.             });
  553.         });
  554.     };
  555.  
  556.     %post{[ptr]
  557.         case(@getchar(@memo(2,ptr,1),9,1),
  558.         {D},{    im({保});
  559.         }, ,{    im({削});
  560.         });
  561.     };
  562.  
  563.     %post2{[ptr]
  564.         case(@getchar(@memo(2,ptr,1),9,1),
  565.         {C},{    im({保});
  566.         }, ,{    im({切});
  567.         });
  568.     };
  569.  
  570.     %del{
  571.         delfile(MesDat);
  572.         delfile(TreeDat);
  573.         delfile(DataDat);
  574.     };
  575.  
  576.     %MesDat   tmpdir|{\_TMP.DAT};
  577.     %TreeDat  tmpdir|{\_TREE.DAT};
  578.     %DataDat  tmpdir|{\_DATA.DAT};
  579.     mclear(2);
  580.     HEADER;
  581.     TREE:={No};
  582.     case(@nolmemo(2)!=3,
  583.     {Yes},{
  584.         loop({
  585.         %wm    {4};
  586.         var Note[80];
  587.         mopen(2,0,21,639,459,{w});
  588.         curline(linenum);
  589.         case(type={Forum} || type={Patio},
  590.         {Yes},{
  591.             case(TREE,
  592.             {Yes},{ Note:={終了    表示    切保    切出ノーマル    全除};
  593.             },{No},{Note:={終了    表示削保切保除去切出ツリー     全除};
  594.             });
  595.         },{No},{    Note:={終了    表示削保切保除去切出        全除};
  596.         });
  597.         footnote(Note,{b});
  598.         loop({waitx(1000);
  599.             im(@xtype!=2 && @xtype<100 || @xlinenum<0)
  600.         });
  601.         linenum := @xlinenum;
  602.         case(@PFK(@xtype),
  603.             2,{    CloseAllMemo;
  604.             case(TREE,{Yes},{dispone2},{No},{dispone});
  605.             im({Yes});
  606.         },101,{ im({No});
  607.         },102,{ CloseAllMemo;
  608.             EXTERNAL({},{});
  609.             im({Yes});
  610.         },103,{ CloseAllMemo;
  611.             case(TREE,{Yes},{dispone2},{No},{dispone});
  612.             im({Yes});
  613.         },104,{ %maxline @nolmemo(2)-1;
  614.             case(linenum>1 && linenum<maxline && TREE={No},
  615.             {Yes},{    delmsg({D});
  616.                 linenum:=linenum+1;
  617.                 case(linenum>=maxline,{Yes},{
  618.                     linenum:=maxline;
  619.                 });
  620.             },{No},{OutAllMemo;
  621.             });
  622.             im({Yes});
  623.         },105,{ %maxline @nolmemo(2)-1;
  624.             case(TREE,
  625.             {Yes},{    copymsg;
  626.             },{No},{delmsg({C});
  627.             });
  628.             linenum:=linenum+1;
  629.             case(linenum>=maxline,{Yes},{
  630.                 linenum:=maxline;
  631.             });
  632.             im({Yes});
  633.         },106,{    case(TREE,
  634.             {Yes},{    OutAllMemo;
  635.                 im({Yes});
  636.             },{No},{%key    {PF6};
  637.                 EXPIRE;
  638.                 im(@filechk(fname));
  639.             });
  640.         },107,{    %key    {PF7};
  641.             EXPIRE;
  642.         },108,{    OutAllMemo;
  643.             case(type={Forum} || type={Patio},{Yes},SetTree);
  644.             im({Yes});
  645.         },110,{    CloseAllMemo;
  646.             case(@rmlog(fname),
  647.             {Yes}, {im({No});
  648.             },{No},{im({Yes});
  649.             });
  650.         },   ,{ OutAllMemo;
  651.             im({Yes});
  652.         });
  653.         });
  654.     },{No},{
  655.         footnote({});
  656.         ok({ログファイルに発言が記録されていません});
  657.     });
  658.     CloseAllMemo;
  659.     %member @body(fname,,{\})|{\MEMBER.TXT};
  660.     case(@memo(3)<>{} && @nolmemo(3)>memnum,{Yes},{mwrite(member,3)});
  661.     DeleteMemo;
  662.     mset(2,{n});
  663.     del;
  664. };
  665.  
  666. %delmark{[fname]
  667.     case(@filechk(fname),
  668.     {No},{
  669.         mclear(2);
  670.         %line @memo(1,boadnum,1);
  671.         mmove(1,1,boadnum-1,2);
  672.         madd(2,{ }|@getchar(line,2,80));
  673.         mmove(1,boadnum+1,@nolmemo(1),2);
  674.         mclear(1);
  675.         mcopy(2,1);
  676.     });
  677. };
  678.  
  679. %rmlog{[fname]
  680.     select({ 受信ログファイル「}|fname|{」を削除します},9999,{im({No});
  681.     },{ O K },{
  682.         delfile(fname);
  683.         delmark(fname);
  684.         im({Yes});
  685.     },{ N G },{
  686.         im({No});
  687.     });
  688. };
  689.  
  690. %dispFile{[filename]
  691.     case(@filechk(logd|{\}|filename),{Yes},{
  692.         mclear(2);
  693.         mread(logd|{\}|filename,2);
  694.         mopen(2,0,21,639,459,{w});
  695.         footnote({終了},{b});
  696.         loop({waitx(1000);
  697.             case(@xtype=2,{Yes},{
  698.                 %tarline    @memo(2,@xlinenum,1);
  699.                 %tarnum    @getchar(tarline,3,2);
  700.                 case(    @getchar(tarline,1,2)={  } &&
  701.                     @getchar(tarline,5,2)={  },
  702.                 {Yes},{
  703.                     case(@YesNo({ }|tarnum|
  704.                         {番のお知らせを受信します}),{Yes},{
  705.                     write(logd|{\UP\INDEX.TXT},
  706.             {予     NEW  :        /}|tarnum|{/     :今週のお知らせ\n});
  707.                     });
  708.                 });
  709.             });
  710.             im(@xtype<100)
  711.         });
  712.         case(@mcheck!=0,{Yes},{mclose(3)});
  713.         mset(2,{n})
  714.     },{No},{
  715.         ok({受信済みのファイルがありません});
  716.     })
  717. };
  718.  
  719. %delboad{
  720.     %line @memo(1,boadnum,1);
  721.     %type @getchar(line,11,14);
  722.     %name @head(@getchar(line,2,8),{ });
  723.     %delerr{
  724.         ok({ このファイルは消せません});
  725.     };
  726.     %Dir{[dir1,dir2]
  727.         rmlog(logd|dir1|name|dir2);
  728.     };
  729.     case(type,
  730.     {最新のNifty オ},{ delerr;
  731.     },{最新のNifty 課},{ delerr;
  732.     },{アクセス履歴情},{ delerr;
  733.     },{受信したメール},{ rmlog(logd|{\MAIL\MAIL.LOG});
  734.     },{HPの最新オープ},{ Dir({\HP\},{.TLT});
  735.     },{HPの内容      },{ Dir({\HP\},{.LOG});
  736.     },{HPの最近の参照},{ Dir({\HP\},{.USR});
  737.     },{Patio のオープ},{ Dir({\PATIO\},{.TLT});
  738.     },{Patio の最近の},{ Dir({\PATIO\},{.USR});
  739.     },{オープニングメ},{ Dir({\},{\TITLE.LOG});
  740.     },{掲示板の内容  },{ Dir({\},{\BUL.LOG});
  741.     },{会議室オープニ},{ delerr;
  742.     },,{
  743.         case(@getchar(type,3,7),
  744.         {会議室 },{
  745.         %num @case(@getchar(line,11,1),
  746.                 { },{im({0}|@getchar(line,12,1))},
  747.                    ,{getchar(line,11,2)}
  748.         );
  749.         Dir({\},{\}|{MES}|num|{.LOG});
  750.         },{tio    },{
  751.         Dir({\PATIO\},{.LOG});
  752.         });
  753.     });
  754. };
  755.  
  756. %dispboad{
  757.     %line @memo(1,boadnum,1);
  758.     %type @getchar(line,11,14);
  759.     %name @head(@getchar(line,2,8),{ });
  760.     chg:={};
  761.     case(type,
  762.     {最新のNifty オ},{dispFile({TITLE.LOG})},
  763.     {最新のNifty 課},{dispFile({BILL.LOG})},
  764.     {アクセス履歴情},{dispFile({ACCOUNT.TXT})},
  765.     {受信したメール},{
  766.         %filename logd|{\MAIL\MAIL.LOG};
  767.         case(@filechk(filename),
  768.         {Yes},{boadmenu(filename,{Mail},name,{1},{0});
  769.         },{No},{ok({受信済のメールがありません})
  770.         })},
  771.     {受信したプロフ},{
  772.         %filename logd|{\MAIL\PROFILE.LOG};
  773.         case(@filechk(filename),
  774.         {Yes},{boadmenu(filename,{Prof},name,{1},{0});
  775.         },{No},{ok({受信したプロフィールはありません})
  776.         })},
  777.     {HPの最新オープ},{dispFile({HP\}|name|{.TLT})},
  778.     {HPの内容      },{
  779.         %filename logd|{\HP\}|name|{.LOG};
  780.         case(@filechk(filename),
  781.         {Yes},{boadmenu(filename,{HP},name,{1},{0});
  782.         },{No},{ok({このHPには受信済のメッセージがありません})
  783.         })},
  784.     {Patio のオープ},{dispFile({PATIO\}|name|{.TLT})},
  785.     {HPの最近の参照},{dispFile({HP\}|name|{.USR})},
  786.     {Patio の最近の},{dispFile({PATIO\}|name|{.USR})},
  787.     {オープニングメ},{dispFile(name|{\TITLE.LOG})},
  788.     {掲示板の内容  },{
  789.         %filename logd|{\}|name|{\BUL.LOG};
  790.         case(@filechk(filename),
  791.         {Yes},{boadmenu(filename,{BUL},name,{1},{0});
  792.         },{No},{ok({受信済の掲示板メッセージがありません})
  793.         })},
  794.     {会議室オープニ},{dispFile(name|{\MESTITLE.LOG})},
  795.     ,{
  796.         case(@getchar(type,3,7),
  797.         {会議室 },{
  798.         %num @case(@getchar(line,11,1),
  799.                 { },{im({0}|@getchar(line,12,1))},
  800.                    ,{getchar(line,11,2)}
  801.         );
  802.         %filename logd|{\}|name|{\}|{MES}|num|{.LOG};
  803.         UnReadL:=@getchar(@memo(1,boadnum),26,3);
  804.         case(@filechk(filename),
  805.         {Yes},{ boadmenu(filename,{Forum},name,{1},{0});
  806.         },{No},{ok({この会議室には,受信済のメッセージがありません})
  807.         });
  808.         },{tio    },{
  809.         %filename logd|{\PATIO\}|name|{.LOG};
  810.         UnReadL:=@getchar(@memo(1,boadnum),26,3);
  811.         case(@filechk(filename),
  812.         {Yes},{boadmenu(filename,{Patio},name,{1},{0});
  813.         },{No},{ok({このPatioには受信済のメッセージがありません})
  814.         })
  815.         });
  816.     });
  817.     case(chg,{Yes},{ChkDrv(current,mr)});
  818. };
  819.  
  820. %alldisp{
  821.     %Disp{[filename]
  822.         case(@filechk(logd|{\}|filename),
  823.         {Yes},{    mclear(2);
  824.             mread(logd|{\}|filename,2);
  825.             footnote({終了},{b});
  826.             mopen(2,0,21,639,459,{w});
  827.             loop({waitx(9999); im(@PFK(@xtype)!=101)});
  828.             check(2);
  829.             mclose(3);
  830.         },{No},{ok({受信済のログファイルがありません});
  831.         });
  832.     };
  833.     %line @memo(1,boadnum,1);
  834.     %type @getchar(line,11,14);
  835.     %name @head(@getchar(line,2,8),{ });
  836.     chg:={};
  837.     case(type,
  838.     {受信したメール},{Disp({MAIL\MAIL.LOG})},
  839.     {受信したプロフ},{Disp({MAIL\PROFILE.LOG})},
  840.     {HPの内容      },{Disp({HP\}|name|{.LOG})},
  841.     {掲示板の内容  },{Disp(name|{\BUL.LOG})},
  842.     ,{
  843.         case(@getchar(type,3,7),
  844.         {会議室 },{
  845.         %num @case(@getchar(line,11,1),
  846.                 { },{im({0}|@getchar(line,12,1))},
  847.                    ,{getchar(line,11,2)}
  848.         );
  849.         Disp(name|{\}|{MES}|num|{.LOG});
  850.         },{tio    },{    Disp({PATIO\}|name|{.LOG});
  851.         });
  852.     });
  853.     case(chg,{Yes},{ChkDrv(current,mr)});
  854. };
  855.  
  856. %DispMail{[fn]
  857.     var filename[80];
  858.     case(@ChkDrv(logm1,mm),{Yes},{
  859.         chg:={Y};
  860.         note({メール});
  861.         setcdir2(logm1);
  862.         case(fn={},
  863.         {Yes},{    %file    @filesel;
  864.             filename:=@getcdir2|{\}|file;
  865.         },{No},{filename:=fn;
  866.         });
  867.         case(@filechk(filename),
  868.         {Yes},{boadmenu(filename,{Mail},name,{1},{0});
  869.         },{No},{ok({保存メールがありません});
  870.         })
  871.     });
  872. };
  873.  
  874. %setcnt{
  875.     select({ 処理を指定してください},9999,{first:={};
  876.     },{  全発言表示  },{first:=1;
  877.     },{ 開始発言指定 },{
  878.         %f @input({ 表示開始番号を指定してください});
  879.         first:=@getchar(f,1,5);
  880.         %c @input({ 表示数を指定してください});
  881.         cnt:=@getchar(c,1,5);
  882. /*    },{ 先頭部分表示 },{
  883.         first:=1;
  884.         cnt:=10;*/
  885.     },{   処理中止   },{first:={};
  886.     });
  887.     case(cnt={},{Yes},{cnt:=0});
  888. };
  889.  
  890. %DispHP{[fn,Type,Type2,mes]
  891.     var filename[80];
  892.     %DHP{
  893.         case(@filechk(filename),
  894.         {Yes},{    var first[5];
  895.             var cnt[3];
  896.             setcnt;
  897.             case(first<>{},
  898.             {Yes},{    boadmenu(filename,Type2,name,first,cnt);
  899.             });
  900.         },{No},{ ok({保存}|mes|{ログがありません});
  901.         })
  902.     };
  903.     case(@ChkDrv(logh1,mh),{Yes},{
  904.         chg:={Y};
  905.         setcdir2(logh1);
  906.         case(fn={},
  907.         {Yes},{    note(mes);
  908.             filename:=@filesel;
  909.             %name    @head(filename,{.});
  910.             filename:=@getcdir2|{\}|filename;
  911.             DHP;
  912.         },{No},{filename:=fn;
  913.             DHP;
  914.         });
  915.     });
  916. };
  917.  
  918. %DispForum{[fn,type]
  919.     var filename[80];
  920.     %DForum{[type]
  921.         case(@filechk(filename),
  922.         {Yes},{
  923.             case(type,
  924.             {Forum},{
  925.             var first[5];
  926.             var cnt[3];
  927.             setcnt;
  928.             case(first<>{},{Yes},{
  929.                 boadmenu(filename,type,name,first,cnt);
  930.             });
  931.             },,{
  932.             boadmenu(filename,type,name,{1},{0});
  933.             });
  934.         },{No},{ ok({保存会議室がありません});
  935.         });
  936.     };
  937.     %DispMes{[type]
  938.         case(@ChkDrv(logc1,mc),{Yes},{
  939.             chg:={Y};
  940.             case(fn={},
  941.             {Yes}, {note({フォーラム});
  942.                 setcdir2(logc1);
  943.                 filename:=@filesel;
  944.                 %name    @tail(@getcdir2,{\});
  945.                 %num     @getchar(filename,4,2);
  946.                 filename:=@getcdir2|{\}|filename;
  947.                 DForum(type);
  948.             },{No},{filename:=fn;
  949.                 DForum(type);
  950.             });
  951.         });
  952.     };
  953.     %DispBul{[type]
  954.         case(@ChkDrv(logb1,mb),{Yes},{
  955.             chg:={Y};
  956.             case(fn={},
  957.             {Yes}, {note({掲示板});
  958.                 setcdir2(logc1);
  959.                 filename:=@filesel;
  960.                 %name    @tail(@getcdir2,{\});
  961.                 filename:=@getcdir2|{\}|filename;
  962.                 DForum(type);
  963.             },{No},{filename:=fn;
  964.                 DForum(type);
  965.             });
  966.         });
  967.     };
  968.  
  969.     case(type,
  970.     {Forum},{ DispMes(type);
  971.     },{BUL},{ DispBul(type);
  972.     });
  973. };
  974.  
  975. %selback{
  976.     var name[10];
  977.     %type    @select({ 参照するバックアップログの種類は?},
  978.             9999,{im({})},
  979.             { メール },{im({Mail})},
  980.             {  HP  },{im({HP})},
  981.             {パティオ},{im({Patio})},
  982.             { 会議室 },{im({Forum})},
  983.             { 掲示板 },{im({BUL})});
  984.     chg:={};
  985.     case(type,
  986.       {Mail},    {DispMail({});
  987.     },{HP},        {DispHP({},hp,{HP},{HP});
  988.     },{Patio},    {DispHP({},patio,{Patio},{パティオ});
  989.     },{Forum},    {DispForum({},{Forum});
  990.     },{BUL},    {DispForum({},{BUL});
  991.     });
  992.     case(chg,{Yes},{ChkDrv(current,mr)});
  993. };
  994.  
  995. %dispback{
  996.     var name[10];
  997.     %line @memo(1,boadnum,1);
  998.     %type @getchar(line,11,14);
  999.     %name @head(@getchar(line,2,8),{ });
  1000.     chg:={};
  1001.     case(type,
  1002.     {受信したメール},{
  1003.         %filename logm1|{\MAIL}|mrgsuff;
  1004.         DispMail(filename);
  1005.     },{HPの内容      },{
  1006.         %filename logh1|{\}|name|mrgsuff;
  1007.         DispHP(filename,{hp},{HP},{HP});
  1008.     },,{
  1009.         case(@getchar(type,3,6),
  1010.         {示板の},{
  1011.         %filename logb1|{\}|name|logb2|{\BUL}|mrgsuff;
  1012.         DispForum(filename,{BUL});
  1013.         },
  1014.         {会議室},{
  1015.         %num @case(@getchar(line,11,1),
  1016.                 { },{im({0}|@getchar(line,12,1))},
  1017.                    ,{getchar(line,11,2)}
  1018.         );
  1019.         %filename logc1|{\}|name|logc2|{\MES}|num|mrgsuff;
  1020.         DispForum(filename,{Forum});
  1021.         },
  1022.         {tio   },{
  1023.         %filename logh1|{\}|name|mrgsuff;
  1024.         DispHP(filename,{patio},{Patio},{パティオ});
  1025.         });
  1026.     });
  1027.     case(chg,{Yes},{ChkDrv(current,mr)});
  1028. };
  1029.  
  1030. var boadnum[10];
  1031. var UnReadL[4];
  1032. var func[4];
  1033. var EOFproc[4];
  1034. EOFproc:={SEL};
  1035. footnote({ 受信文書の一覧を作成中です});
  1036. Treq:={VIEW};
  1037. TITLE;
  1038. boadnum:=0;
  1039. loop({
  1040.     case(EOFproc,
  1041.     {SEL},{
  1042.         mopen(1,0,21,639,459,{r});
  1043.         curline(boadnum);
  1044.         footnote({終了        表示    保呼ファイル        全除},{b});
  1045.         loop({
  1046.             waitx(1000);
  1047.             im(@xtype!=1 && @xtype<100 || @xlinenum<0)
  1048.         });
  1049.         boadnum :=@xlinenum;
  1050.         func    :=@PFK(@xtype);
  1051.     },{NEXT},{
  1052.         boadnum :=boadnum+1;
  1053.         func    :=103;
  1054.     });
  1055.     case(func,
  1056.         1,{    CloseAllMemo;
  1057.         dispboad;
  1058.     },101,{
  1059.     },104,{ CloseAllMemo;
  1060.         dispboad;
  1061.     },105,{ CloseAllMemo;
  1062.         alldisp;
  1063.     },106,{ CloseAllMemo;
  1064.         dispback;
  1065.     },107,{ CloseAllMemo;
  1066.         selback;
  1067.     },110,{ CloseAllMemo;
  1068.         delboad;
  1069.     },   ,{ OutAllMemo;
  1070.     });
  1071.     im(func<>101)
  1072. });
  1073. footnote({});
  1074. allclear;
  1075.